home *** CD-ROM | disk | FTP | other *** search
- unit DQAddTable;
- {$I DQuery.inc}
-
- interface
-
- uses
- {$IFDEF WIN32}
- Windows,
- {$ELSE}
- WinTypes, WinProcs,
- {$ENDIF}
- Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- ExtCtrls, StdCtrls, Buttons, DB, DBTables, dclDQuery;
-
- type
- TFormDQAddTable = class(TForm)
- LDB: TLabel;
- Label2: TLabel;
- LBTable: TListBox;
- Label3: TLabel;
- EAlias: TEdit;
- BBAdd: TBitBtn;
- BBClose: TBitBtn;
- BBHelp: TBitBtn;
- BBDataBaseFile: TBitBtn;
- OpenDBDlg: TOpenDialog;
- BBBrow: TButton;
- CBDatabase: TComboBox;
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure BBCloseClick(Sender: TObject);
- procedure CBDatabaseChange(Sender: TObject);
- procedure LBTableClick(Sender: TObject);
- procedure FormShow(Sender: TObject);
- procedure BBAddClick(Sender: TObject);
- procedure LBTableDblClick(Sender: TObject);
- procedure BBHelpClick(Sender: TObject);
- procedure BBDataBaseFileClick(Sender: TObject);
- procedure BBBrowClick(Sender: TObject);
- private
- Procedure LoadDB (Items: TStrings);
- Function GetDataBaseSt: String;
- Procedure LoadTable (clString: TStrings; StDataBase: String;
- ExtSession: TSession; Pattern: String;
- Extensions, SystemTables: Boolean);
- public
- StDataBase: String;
- StTable: String;
- StAlias: String;
- EveneAdd: TNotifyEvent;
- CStAlias: TStrings;
- bMultiDB: Boolean;
- Procedure SetData (p_StDataBase, p_StTable, p_StAlias: String);
- { Public declarations }
- end;
-
- var
- FormDQAddTable: TFormDQAddTable;
- DBItem: Integer;
-
- implementation
-
- {$R *.DFM}
- Uses DQViewData;
- Procedure TFormDQAddTable.LoadDB (Items: TStrings);
- Var
- i: Integer;
- st: String;
- DataBase: TDataBase;
- iCount: Integer;
- Begin
- Items.Clear;
- Session.GetAliasNames (CStAlias);
- Items.BeginUpdate;
- i := 0;
- iCount := CStAlias.Count;
- While (i < iCount) Do
- Begin
- St := Session.GetAliasDriverName (CStAlias.Strings[i]);
- if St <> '' Then
- St := CStAlias.Strings[i] + ' (' + St + ')'
- Else
- St := CStAlias.Strings[i];
- Items.Add (St);
- Inc (i);
- End;
- Items.EndUpdate;
- End;
- Function TFormDQAddTable.GetDataBaseSt: String;
- Begin
- Result := '';
- if CBDatabase.ItemIndex >= 0 Then
- Result := CStAlias.Strings[CBDatabase.ItemIndex];
- End;
- Procedure TFormDQAddTable.LoadTable (clString: TStrings; StDataBase: String;
- ExtSession: TSession; Pattern: String;
- Extensions, SystemTables: Boolean);
- Var
- Cursor: TCursor;
- Begin
- clString.Clear;
- if StDataBase = '' Then Exit;
- clString.BeginUpdate;
- Cursor := Screen.Cursor;
- Screen.Cursor := crHourGlass;
- if Pattern = '' Then
- Pattern := '*.*';
- Try
- Session.GetTableNames (StDataBase, Pattern, Extensions, SystemTables, clString);
- Finally
- Screen.Cursor := Cursor;
- clString.EndUpdate;
- End;
- End;
- Procedure TFormDQAddTable.FormCreate(Sender: TObject);
- Begin
- CStAlias := TStringList.Create;
-
- LoadDB (CBDatabase.Items);
- StDataBase := '';
- StTable := '';
- StAlias := '';
- bMultiDB := TRUE;
- End;
- Procedure TFormDQAddTable.FormShow(Sender: TObject);
- Var
- Form: TForm;
- Begin
- Top := Screen.Height - Self.Height;
- Left := (Screen.Width div 2) - (Self.Width div 2);
- Form := nil;
- if Application <> nil Then
- if Application.MainForm <> nil Then
- Form := Application.MainForm;
-
- CBDatabase.Visible := bMultiDB;
- LDB.Visible := bMultiDB;
-
- if StDataBase <> '' Then
- CBDatabase.ItemIndex := CStAlias.IndexOf (StDataBase)
- Else
- if CBDatabase.Items.Count > 0 Then
- CBDatabase.ItemIndex := DBItem
- Else
- CBDatabase.ItemIndex := -1;
- CBDatabaseChange (nil);
- if StTable <> '' Then
- Begin
- LBTable.ItemIndex := LBTable.Items.IndexOf (StTable);
- if LBTable.ItemIndex >= 0 Then
- Begin
- EAlias.Text := StAlias;
- EAlias.Enabled := FALSE;
- EAlias.Color := clSilver;
- End;
- End;
- End;
- Procedure TFormDQAddTable.FormDestroy(Sender: TObject);
- Begin
- FormDQAddTable := nil;
- CStAlias.Free;
- End;
- Procedure TFormDQAddTable.FormClose(Sender: TObject; var Action: TCloseAction);
- Begin
- Action := caFree;
- End;
- Procedure TFormDQAddTable.CBDatabaseChange(Sender: TObject);
- Var
- St: String;
- Begin
- St := GetDataBaseSt;
-
- LoadTable (LBTable.Items, St, nil, '', FALSE, TRUE);
-
- if LBTable.Items.Count > 0 Then
- LBTable.ItemIndex := 0
- Else
- LBTable.ItemIndex := -1;
- LBTableClick (nil);
- End;
- Procedure TFormDQAddTable.LBTableClick (Sender: TObject);
- Var
- St: String;
- StTemp: String;
- iPos: Integer;
- Begin
- if LBTable.ItemIndex < 0 Then Exit;
- St := LBTable.Items.Strings[LBTable.ItemIndex];
- iPos := Pos ('.', St);
- if iPos > 1 Then
- Begin
- StTemp := Copy (St, iPos, Length (St) - iPos + 1);
- StTemp := UpperCase (StTemp);
- if (StTemp = '.DBF') or (StTemp = '.DB') Then
- St := Copy (St, 1, iPos - 1)
- Else
- St := DQCutCharInString (St, ' .');
- End
- Else
- St := DQCutCharInString (St, ' .');
- EAlias.Text := St;
- End;
- Procedure TFormDQAddTable.LBTableDblClick(Sender: TObject);
- Begin
- BBAddClick (nil);
- End;
- Procedure TFormDQAddTable.BBCloseClick(Sender: TObject);
- Begin
- DBItem := CBDatabase.ItemIndex;
- Close;
- ModalResult := mrCancel;
- End;
- Procedure TFormDQAddTable.BBAddClick(Sender: TObject);
- Var
- St: String;
- Begin
- StDataBase := GetDataBaseSt;
- StTable := LBTable.Items.Strings[LBTable.ItemIndex];
- StAlias := EAlias.Text;
- St := Session.GetAliasDriverName (StDataBase);
- {$IFDEF VERIFY_MSACCESS}
- if St = 'MSACCESS' Then
- Begin
- bMultiDB := FALSE;
- CBDatabase.Visible := bMultiDB;
- LDB.Visible := bMultiDB;
- End;
- {$ENDIF}
-
- if Assigned (EveneAdd) Then
- EveneAdd(Self)
- Else
- Begin
- Close;
- ModalResult := mrOK;
- End;
- End;
- Procedure TFormDQAddTable.BBHelpClick(Sender: TObject);
- Begin
- Beep;
- End;
- Procedure TFormDQAddTable.BBDataBaseFileClick(Sender: TObject);
- Var
- St: String;
- iTemp: Integer;
- Begin
- Visible := FALSE;
- if OpenDBDlg.Execute Then
- Begin
- St := OpenDBDlg.FileName;
- StDataBase := ExtractFilePath (St);
- StTable := ExtractFileName (St);
- StAlias := StTable;
- St := ExtractFileExt (StTable);
- iTemp := Length (St);
- Delete (StAlias, Length (StTable) - iTemp + 1, iTemp);
- if Assigned (EveneAdd) Then
- EveneAdd(Self);
- End;
- Close;
- ModalResult := mrOK;
- End;
- Procedure TFormDQAddTable.SetData (p_StDataBase, p_StTable, p_StAlias: String);
- Begin
- StDataBase := p_StDataBase;
- StTable := p_StTable;
- StAlias := p_StAlias;
- End;
- Procedure TFormDQAddTable.BBBrowClick(Sender: TObject);
- Var
- StDataBase: String;
- StTable: String;
- Table: TTable;
- Begin
- // Duck
- StDataBase := GetDataBaseSt;
- StTable := LBTable.Items.Strings[LBTable.ItemIndex];
- Table := TTable.Create (Self);
- Table.ReadOnly := TRUE;
- {$IFDEF WIN32}
- Table.SessionName := Session.SessionName;
- {$ENDIF}
-
- Table.DatabaseName := StDataBase;
- Table.TableName := StTable;
- Try
- Table.Active := TRUE;
-
- FormDQViewData := TFormDQViewData.Create (Self);
- FormDQViewData.DataSource.DataSet := Table;
- FormDQViewData.ShowModal;
- Finally
- Table.Active := FALSE;
- Table.Free;
- End;
- End;
- Initialization
- DBItem := 0;
- End.
-